{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {},
   "outputs": [],
   "source": [
    "#use pip install as conda install requires a lot of downgrades at this stage\n",
    "import pygraphviz as pgv\n",
    "from IPython.core.display import Image"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## The cell below comes from the Orthology notebook"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {},
   "outputs": [],
   "source": [
    "import requests\n",
    " \n",
    "ensembl_server = 'http://rest.ensembl.org'\n",
    "\n",
    "def do_request(server, service, *args, **kwargs):\n",
    "    params = ''\n",
    "    for a in args:\n",
    "        if a is not None:\n",
    "            params += '/' + a\n",
    "    req = requests.get('%s/%s%s' % (server, service, params),\n",
    "                       params=kwargs,\n",
    "                       headers={'Content-Type': 'application/json'})\n",
    " \n",
    "    if not req.ok:\n",
    "        req.raise_for_status()\n",
    "    return req.json()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {},
   "outputs": [],
   "source": [
    "lct_id = 'ENSG00000115850'"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "28\n",
      "dict_keys(['display_id', 'primary_id', 'version', 'linkage_types', 'description', 'dbname', 'synonyms', 'info_text', 'info_type', 'db_display_name'])\n",
      "GO:0000016 molecular_function lactase activity\n",
      "\"Catalysis of the reaction: lactose + H2O = D-glucose + D-galactose.\" [EC:3.2.1.108]\n",
      "\n",
      "GO:0000016 molecular_function lactase activity\n",
      "\"Catalysis of the reaction: lactose + H2O = D-glucose + D-galactose.\" [EC:3.2.1.108]\n",
      "\n",
      "GO:0000016 molecular_function lactase activity\n",
      "\"Catalysis of the reaction: lactose + H2O = D-glucose + D-galactose.\" [EC:3.2.1.108]\n",
      "\n",
      "GO:0000016 molecular_function lactase activity\n",
      "\"Catalysis of the reaction: lactose + H2O = D-glucose + D-galactose.\" [EC:3.2.1.108]\n",
      "\n",
      "GO:0003824 molecular_function catalytic activity\n",
      "\"Catalysis of a biochemical reaction at physiological temperatures. In biologically catalyzed reactions, the reactants are known as substrates, and the catalysts are naturally occurring macromolecular substances known as enzymes. Enzymes possess specific binding sites for substrates, and are usually composed wholly or largely of protein, but RNA that has catalytic activity (ribozyme) is often also regarded as enzymatic.\" [GOC:vw, ISBN:0198506732]\n",
      "\n",
      "GO:0004553 molecular_function hydrolase activity, hydrolyzing O-glycosyl compounds\n",
      "\"Catalysis of the hydrolysis of any O-glycosyl bond.\" [GOC:mah]\n",
      "\n",
      "GO:0004553 molecular_function hydrolase activity, hydrolyzing O-glycosyl compounds\n",
      "\"Catalysis of the hydrolysis of any O-glycosyl bond.\" [GOC:mah]\n",
      "\n",
      "GO:0005886 cellular_component plasma membrane\n",
      "\"The membrane surrounding a cell that separates the cell from its external environment. It consists of a phospholipid bilayer and associated proteins.\" [ISBN:0716731363]\n",
      "\n",
      "GO:0005886 cellular_component plasma membrane\n",
      "\"The membrane surrounding a cell that separates the cell from its external environment. It consists of a phospholipid bilayer and associated proteins.\" [ISBN:0716731363]\n",
      "\n",
      "GO:0005887 cellular_component integral component of plasma membrane\n",
      "\"The component of the plasma membrane consisting of the gene products and protein complexes having at least some part of their peptide sequence embedded in the hydrophobic region of the membrane.\" [GOC:dos, GOC:go_curators]\n",
      "\n",
      "GO:0005975 biological_process carbohydrate metabolic process\n",
      "\"The chemical reactions and pathways involving carbohydrates, any of a group of organic compounds based of the general formula Cx(H2O)y. Includes the formation of carbohydrate derivatives by the addition of a carbohydrate residue to another molecule.\" [GOC:mah, ISBN:0198506732]\n",
      "\n",
      "GO:0005975 biological_process carbohydrate metabolic process\n",
      "\"The chemical reactions and pathways involving carbohydrates, any of a group of organic compounds based of the general formula Cx(H2O)y. Includes the formation of carbohydrate derivatives by the addition of a carbohydrate residue to another molecule.\" [GOC:mah, ISBN:0198506732]\n",
      "\n",
      "GO:0008152 biological_process metabolic process\n",
      "\"The chemical reactions and pathways, including anabolism and catabolism, by which living organisms transform chemical substances. Metabolic processes typically transform small molecules, but also include macromolecular processes such as DNA repair and replication, and protein synthesis and degradation.\" [GOC:go_curators, ISBN:0198547684]\n",
      "\n",
      "GO:0008422 molecular_function beta-glucosidase activity\n",
      "\"Catalysis of the hydrolysis of terminal, non-reducing beta-D-glucose residues with release of beta-D-glucose.\" [EC:3.2.1.21]\n",
      "\n",
      "GO:0016020 cellular_component membrane\n",
      "\"A lipid bilayer along with all the proteins and protein complexes embedded in it an attached to it.\" [GOC:dos, GOC:mah, ISBN:0815316194]\n",
      "\n",
      "GO:0016020 cellular_component membrane\n",
      "\"A lipid bilayer along with all the proteins and protein complexes embedded in it an attached to it.\" [GOC:dos, GOC:mah, ISBN:0815316194]\n",
      "\n",
      "GO:0016021 cellular_component integral component of membrane\n",
      "\"The component of a membrane consisting of the gene products and protein complexes having at least some part of their peptide sequence embedded in the hydrophobic region of the membrane.\" [GOC:dos, GOC:go_curators]\n",
      "\n",
      "GO:0016324 cellular_component apical plasma membrane\n",
      "\"The region of the plasma membrane located at the apical end of the cell.\" [GOC:curators]\n",
      "\n",
      "GO:0016787 molecular_function hydrolase activity\n",
      "\"Catalysis of the hydrolysis of various bonds, e.g. C-O, C-N, C-C, phosphoric anhydride bonds, etc. Hydrolase is the systematic name for any enzyme of EC class 3.\" [ISBN:0198506732]\n",
      "\n",
      "GO:0016798 molecular_function hydrolase activity, acting on glycosyl bonds\n",
      "\"Catalysis of the hydrolysis of any glycosyl bond.\" [GOC:jl]\n",
      "\n",
      "GO:0017042 molecular_function glycosylceramidase activity\n",
      "\"Catalysis of the reaction: glycosyl-N-acylsphingosine + H2O = a sugar + N-acylsphingosine.\" [EC:3.2.1.62]\n",
      "\n",
      "GO:0044245 biological_process polysaccharide digestion\n",
      "\"The whole of the physical, chemical, and biochemical processes carried out by living organisms to break down ingested polysaccharides into components that may be easily absorbed and directed into metabolism.\" [GOC:go_curators]\n",
      "\n",
      "GO:1901657 biological_process glycosyl compound metabolic process\n",
      "\"The chemical reactions and pathways involving glycosyl compound.\" [GOC:pr, GOC:TermGenie]\n",
      "\n",
      "GO:0004553 molecular_function hydrolase activity, hydrolyzing O-glycosyl compounds\n",
      "\"Catalysis of the hydrolysis of any O-glycosyl bond.\" [GOC:mah]\n",
      "\n",
      "GO:0005975 biological_process carbohydrate metabolic process\n",
      "\"The chemical reactions and pathways involving carbohydrates, any of a group of organic compounds based of the general formula Cx(H2O)y. Includes the formation of carbohydrate derivatives by the addition of a carbohydrate residue to another molecule.\" [GOC:mah, ISBN:0198506732]\n",
      "\n",
      "GO:0008152 biological_process metabolic process\n",
      "\"The chemical reactions and pathways, including anabolism and catabolism, by which living organisms transform chemical substances. Metabolic processes typically transform small molecules, but also include macromolecular processes such as DNA repair and replication, and protein synthesis and degradation.\" [GOC:go_curators, ISBN:0198547684]\n",
      "\n",
      "GO:0016787 molecular_function hydrolase activity\n",
      "\"Catalysis of the hydrolysis of various bonds, e.g. C-O, C-N, C-C, phosphoric anhydride bonds, etc. Hydrolase is the systematic name for any enzyme of EC class 3.\" [ISBN:0198506732]\n",
      "\n",
      "GO:0016798 molecular_function hydrolase activity, acting on glycosyl bonds\n",
      "\"Catalysis of the hydrolysis of any glycosyl bond.\" [GOC:jl]\n",
      "\n"
     ]
    }
   ],
   "source": [
    "refs = do_request(ensembl_server, 'xrefs/id', lct_id, external_db='GO', all_levels='1')\n",
    "print(len(refs))\n",
    "print(refs[0].keys())\n",
    "for ref in refs:\n",
    "    go_id = ref['primary_id']\n",
    "    details = do_request(ensembl_server, 'ontology/id', go_id)\n",
    "    print('%s %s %s' % (go_id,  details['namespace'], ref['description']))\n",
    "    print('%s\\n' % details['definition'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "namespace: molecular_function\n",
      "name: lactase activity\n",
      "children: []\n",
      "subsets: []\n",
      "definition: \"Catalysis of the reaction: lactose + H2O = D-glucose + D-galactose.\" [EC:3.2.1.108]\n",
      "accession: GO:0000016\n",
      "ontology: GO\n",
      "synonyms: ['lactase-phlorizin hydrolase activity', 'lactose galactohydrolase activity']\n",
      "{'ontology': 'GO', 'namespace': 'molecular_function', 'synonyms': ['O-glucosyl hydrolase activity'], 'name': 'hydrolase activity, hydrolyzing O-glycosyl compounds', 'subsets': ['gosubset_prok'], 'definition': '\"Catalysis of the hydrolysis of any O-glycosyl bond.\" [GOC:mah]', 'accession': 'GO:0004553'}\n",
      "\n",
      "GO:0004553 127\n"
     ]
    }
   ],
   "source": [
    "go_id = 'GO:0000016'\n",
    "my_data = do_request(ensembl_server, 'ontology/id', go_id)\n",
    "for k, v in my_data.items():\n",
    "    if k == 'parents':\n",
    "        for parent in v:\n",
    "            print(parent)\n",
    "            parent_id = parent['accession']\n",
    "    else:\n",
    "        print('%s: %s' % (k, str(v)))\n",
    "print()\n",
    "parent_data = do_request(ensembl_server, 'ontology/id', parent_id)\n",
    "print(parent_id, len(parent_data['children']))"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "GO:0003674\n",
      "molecular_function \"The actions of a single gene product or complex at the molecular level consisting of a single biochemical activity or multiple causally linked biochemical activities. A given gene product may exhibit one or more molecular functions.\" [GOC:go_curators]\n",
      "\t is a: \n",
      "\n",
      "GO:0004553\n",
      "hydrolase activity, hydrolyzing O-glycosyl compounds \"Catalysis of the hydrolysis of any O-glycosyl bond.\" [GOC:mah]\n",
      "\t is a: GO:0016798\n",
      "\n",
      "GO:0016787\n",
      "hydrolase activity \"Catalysis of the hydrolysis of various bonds, e.g. C-O, C-N, C-C, phosphoric anhydride bonds, etc. Hydrolase is the systematic name for any enzyme of EC class 3.\" [ISBN:0198506732]\n",
      "\t is a: GO:0003824\n",
      "\n",
      "GO:0003824\n",
      "catalytic activity \"Catalysis of a biochemical reaction at physiological temperatures. In biologically catalyzed reactions, the reactants are known as substrates, and the catalysts are naturally occurring macromolecular substances known as enzymes. Enzymes possess specific binding sites for substrates, and are usually composed wholly or largely of protein, but RNA that has catalytic activity (ribozyme) is often also regarded as enzymatic.\" [GOC:vw, ISBN:0198506732]\n",
      "\t is a: GO:0003674\n",
      "\n",
      "GO:0000016\n",
      "lactase activity \"Catalysis of the reaction: lactose + H2O = D-glucose + D-galactose.\" [EC:3.2.1.108]\n",
      "\t is a: GO:0004553\n",
      "\n",
      "GO:0016798\n",
      "hydrolase activity, acting on glycosyl bonds \"Catalysis of the hydrolysis of any glycosyl bond.\" [GOC:jl]\n",
      "\t is a: GO:0016787\n",
      "\n"
     ]
    }
   ],
   "source": [
    "refs = do_request(ensembl_server, 'ontology/ancestors/chart', go_id)\n",
    "for go, entry in refs.items():\n",
    "    print(go)\n",
    "    term = entry['term']\n",
    "    print('%s %s' % (term['name'], term['definition']))\n",
    "    is_a = entry.get('is_a', [])\n",
    "    print('\\t is a: %s\\n' % ', '.join([x['accession'] for x in is_a]))\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {},
   "outputs": [],
   "source": [
    "def get_upper(go_id):\n",
    "    parents = {}\n",
    "    node_data = {}\n",
    "    refs = do_request(ensembl_server, 'ontology/ancestors/chart', go_id)\n",
    "    for ref, entry in refs.items():\n",
    "        my_data = do_request(ensembl_server, 'ontology/id', ref)\n",
    "        node_data[ref] = {'name': entry['term']['name'], 'children': my_data['children']}\n",
    "        try:\n",
    "            parents[ref] = [x['accession'] for x in entry['is_a']]\n",
    "        except KeyError:\n",
    "            pass  # Top of hierarchy\n",
    "    return parents, node_data"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [],
   "source": [
    "parents, node_data = get_upper(go_id)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "strict digraph {\n",
      "\t\"hydrolase activity\n",
      "acting on glycosyl bonds\n",
      "(GO:0016798)\" -> \"...2...\";\n",
      "\t\"hydrolase activity\n",
      "acting on glycosyl bonds\n",
      "(GO:0016798)\" -> \"hydrolase activity\n",
      "hydrolyzing O-glycosyl compounds\n",
      "(GO:0004553)\";\n",
      "\t\"hydrolase activity\n",
      "hydrolyzing O-glycosyl compounds\n",
      "(GO:0004553)\" -> \"...126...\";\n",
      "\t\"hydrolase activity\n",
      "hydrolyzing O-glycosyl compounds\n",
      "(GO:0004553)\" -> \"lactase activity\n",
      "(GO:0000016)\";\n",
      "\t\"catalytic activity\n",
      "(GO:0003824)\" -> \"...18...\";\n",
      "\t\"catalytic activity\n",
      "(GO:0003824)\" -> \"hydrolase activity\n",
      "(GO:0016787)\";\n",
      "\t\"hydrolase activity\n",
      "(GO:0016787)\" -> \"hydrolase activity\n",
      "acting on glycosyl bonds\n",
      "(GO:0016798)\";\n",
      "\t\"hydrolase activity\n",
      "(GO:0016787)\" -> \"...23...\";\n",
      "\t\"molecular_function\n",
      "(GO:0003674)\" -> \"catalytic activity\n",
      "(GO:0003824)\";\n",
      "\t\"molecular_function\n",
      "(GO:0003674)\" -> \"...14...\";\n",
      "}\n",
      "\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<IPython.core.display.Image object>"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "g = pgv.AGraph(directed=True)\n",
    "for ofs, ofs_parents in parents.items():\n",
    "    ofs_text = '%s\\n(%s)' % (node_data[ofs]['name'].replace(', ', '\\n'), ofs)\n",
    "    for parent in ofs_parents:\n",
    "        parent_text = '%s\\n(%s)' % (node_data[parent]['name'].replace(', ', '\\n'), parent)\n",
    "        children = node_data[parent]['children']\n",
    "        if len(children) < 3:\n",
    "            for child in children:\n",
    "                if child['accession'] in node_data:\n",
    "                    continue\n",
    "                g.add_edge(parent_text, child['accession'])\n",
    "        else:\n",
    "            g.add_edge(parent_text, '...%d...' % (len(children) - 1))\n",
    "        g.add_edge(parent_text, ofs_text)\n",
    "print(g)\n",
    "g.graph_attr['label']='Ontology tree for Lactase activity'\n",
    "g.node_attr['shape']='rectangle'\n",
    "g.layout(prog='dot')\n",
    "g.draw('graph.png')\n",
    "Image(\"graph.png\")"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "GO:0000016\n",
      "GO:0004553 hydrolase activity, hydrolyzing O-glycosyl compounds \"Catalysis of the hydrolysis of any O-glycosyl bond.\" [GOC:mah]\n",
      "GO:0016798 hydrolase activity, acting on glycosyl bonds \"Catalysis of the hydrolysis of any glycosyl bond.\" [GOC:jl]\n",
      "GO:0016787 hydrolase activity \"Catalysis of the hydrolysis of various bonds, e.g. C-O, C-N, C-C, phosphoric anhydride bonds, etc. Hydrolase is the systematic name for any enzyme of EC class 3.\" [ISBN:0198506732]\n",
      "GO:0003824 catalytic activity \"Catalysis of a biochemical reaction at physiological temperatures. In biologically catalyzed reactions, the reactants are known as substrates, and the catalysts are naturally occurring macromolecular substances known as enzymes. Enzymes possess specific binding sites for substrates, and are usually composed wholly or largely of protein, but RNA that has catalytic activity (ribozyme) is often also regarded as enzymatic.\" [GOC:vw, ISBN:0198506732]\n",
      "GO:0003674 molecular_function \"The actions of a single gene product or complex at the molecular level consisting of a single biochemical activity or multiple causally linked biochemical activities. A given gene product may exhibit one or more molecular functions.\" [GOC:go_curators]\n"
     ]
    }
   ],
   "source": [
    "print(go_id)\n",
    "refs = do_request(ensembl_server, 'ontology/descendants', go_id)\n",
    "for go in refs:\n",
    "    print(go['accession'], go['name'], go['definition'])"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.6.11"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 2
}
